SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[parMovimientosDocentesControlProceso]
	 @Desde VARCHAR(10),
	 @Hasta VARCHAR(10), 
	 @Usuario INT = NULL , 
	 @CUISE INT = NULL, 
	 @Dias INT 
 AS
SET NOCOUNT ON
IF @CUISE  = ''
    SET @CUISE = NULL

DECLARE @NtUser VARCHAR(50)

SET @NtUser = ''
     
IF @Usuario IS NOT NULL 
   SELECT @NtUser = NTUser FROM tb_Usuarios WHERE idUsuario = @Usuario


SELECT O.CUISE, O.Nombre Denominacion, 
	   CONVERT(VARCHAR(10),CM.Fecha ,103) Registro, 
	   CONVERT(VARCHAR(10),CM.FechaEjecucion, 103) Ejecución,
	   MD.Descripcion  Movimiento,
	   EC.Descripcion Estado,
	   DATEDIFF(DAY, CM.Fecha, CM.FechaEjecucion) Dias, 
	   CONVERT(VARCHAR(10),CM.Fecha1,103) AltaInicio, 
	   CONVERT(VARCHAR(10),CM.Fecha2,103) BajaFin,
	   CM.NTUserAutor Autor, CM.NTUserEjecutor Ejecutor
	FROM tb_ColaDeMovimientos CM
	   INNER JOIN tb_MovimientosDocentes MD ON MD.idMovimiento = CM.Movimiento 
	   INNER JOIN tb_Organizaciones O ON O.idOrganizaciones = CM.Organizacion 
	   INNER JOIN tb_InicioSGITemp I ON I.Organizacion  = CM.Organizacion 
	   INNER JOIN tb_EstadosDeCola EC ON EC.idEstado = CM.Estado 
	WHERE CM.Fecha >= @Desde
	  AND CM.Fecha <= @Hasta
	  AND ((@NtUser = '') OR (@NtUser <> '' AND CM.NTUserEjecutor = @NtUser)) 
	  AND ((@CUISE IS NULL) OR (@CUISE IS NOT NULL AND O.CUISE = @CUISE))
	  AND DATEDIFF(DAY, CM.Fecha, CM.FechaEjecucion) >= @Dias
 
UNION ALL 
	
SELECT O.CUISE, O.Nombre Denominacion, 
	   CONVERT(VARCHAR(10),CM.Fecha ,103) Registro, 
	   ' '  Ejecución,
	   MD.Descripcion  Movimiento,
	   EC.Descripcion Estado,
	   DATEDIFF(DAY, CM.Fecha, GETDATE()) Dias, 
	   CONVERT(VARCHAR(10),CM.Fecha1,103) AltaInicio, 
	   CONVERT(VARCHAR(10),CM.Fecha2,103) BajaFin,
	   CM.NTUserAutor Autor, '' Ejecutor
	FROM tb_ColaDeMovimientos CM
	   INNER JOIN tb_MovimientosDocentes MD ON MD.idMovimiento = CM.Movimiento 
	   INNER JOIN tb_Organizaciones O ON O.idOrganizaciones = CM.Organizacion 
	   INNER JOIN tb_InicioSGITemp I ON I.Organizacion  = CM.Organizacion
	   INNER JOIN tb_EstadosDeCola EC ON EC.idEstado = CM.Estado 
	WHERE CM.Fecha >= @Desde
	  AND CM.Fecha <= @Hasta
	  AND CM.NTUserEjecutor IS NULL 
	  AND ((@CUISE IS NULL) OR (@CUISE IS NOT NULL AND O.CUISE = @CUISE))
	  AND DATEDIFF(DAY, CM.Fecha, GETDATE()) >= @Dias
	  AND ((@NtUser = '') OR (@NtUser <> '' AND EXISTS(SELECT TOP 1 * FROM Tb_RelUsuarioOrganizacion UO WHERE UO.idUsuario = @Usuario AND UO.idorganizacion = CM.Organizacion)))
 	--ORDER BY O.CUISE, CM.Fecha
GO
GRANT EXECUTE ON  [dbo].[parMovimientosDocentesControlProceso] TO [Informatica]
GRANT EXECUTE ON  [dbo].[parMovimientosDocentesControlProceso] TO [PersonalDocente]
GRANT EXECUTE ON  [dbo].[parMovimientosDocentesControlProceso] TO [PersonalDocenteDireccion]
GO
